package pe.com.hermes.hermetic.web.controller.reportes;

import pe.com.hermes.hermetic.beans.AuditBean;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;
import pe.com.hermes.hermetic.negocio.ultil.Util;
import pe.com.hermes.hermetic.web.controller.base.IController;
import pe.com.hermes.hermetic.web.controller.base.IWebOpciones;
import pe.com.hermes.hermetic.web.controller.general.MostrarReporteController;
import pe.com.hermes.hermetic.web.forms.HMF4006Form;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;


@RequestMapping("/mostrarHWF4006.html")
@Controller
@SessionAttributes(value={"form","codOpci","desOpci"})
public class PiezasProcesadasController implements IController{

        private Logger logger = Logger.getLogger(this.getClass());
        
        @Autowired
        HermeticFacade servicioHermetic;
        
        @Autowired
        private MostrarReporteController reporteFactory;
        
        @RequestMapping(method=RequestMethod.GET)
        protected String showForm(ModelMap model, HttpServletRequest request) throws Exception {

            HttpSession session = request.getSession(false);        
            if (request.getSession().getAttribute("usuario") == null)
                return FORM_SESSION_FINISH;

            List listaTransacciones = (List)session.getAttribute("listaMenu3");
            if (!Util.validaAccesoOpcion(listaTransacciones, ConstantesHermetic.REPORTE_PIEZAS_PROCESADAS)) {
                return FORM_ACCESS_NULL_VIEW;
            }

            String cliente = (String)request.getSession().getAttribute("cliente");
            //String sucursal = (String)request.getSession().getAttribute("sucursal");
             List listadoTipoMoneda = servicioHermetic.getTipoUniMoneClie(cliente);
             
            HMF4006Form form = new HMF4006Form();
            form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
            
            try {
            
                if (listadoTipoMoneda != null) {
                   model.put("listadoTipoMoneda", listadoTipoMoneda);
                 }
                 
                String fecha = servicioHermetic.getFechaHoy();
                
                form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
                form.setFechadesde(fecha);
                form.setFechahasta(fecha);
                AuditBean auditBean = new AuditBean(PIEZAS_RECON);
                servicioHermetic.inseAudit(auditBean);
                 String codOpci = IWebOpciones.PIEZAS_RECON;
                 String desOpci = servicioHermetic.getDesOpci(codOpci, request);
                 model.put("codOpci",codOpci);
                 model.put("desOpci",desOpci);
                model.put(FORM_KEY,form);  
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("Error en el proceso. "+ e);
                return FORM_ERROR_VIEW;
            }        
            return FORM_PIEZAS_PROCESADAS_VIEW;
        }
        
       @RequestMapping(params="accion=mostrarReporte")
       protected String mostrarReporte(ModelMap model,@ModelAttribute(FORM_KEY) HMF4006Form form, HttpServletRequest request,HttpServletResponse response) throws Exception{
        
        if (request.getSession().getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        String cliente = (String)request.getSession().getAttribute("cliente");
        String sucursal = (String)request.getSession().getAttribute("sucursal");
        String Fechadesde = request.getParameter("fechadesde");
        String Fechahasta = request.getParameter("fechahasta");
        String moneda = request.getParameter("moneda");
        
        try {

            List listaPiezasProcesadas = 
                servicioHermetic.getPiezasProcesadas(Fechadesde, 
                                                           Fechahasta, 
                                                           sucursal, cliente, 
                                                           moneda);
            if (listaPiezasProcesadas != null) {
                model.put("listaPiezasProcesadas", listaPiezasProcesadas);
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("Error en el proceso. "+ e);
            return FORM_ERROR_VIEW;
        }
        
        response.addHeader("Content-type", "application/vnd.ms-excel");
        response.addHeader("Content-Disposition", "inline; filename=PiezasProcesadas.xls");
        response.setContentType("Content-type: application/vnd.ms-excel");
               
        response.setHeader("Cache-Control","cache"); // HTTP 1.1
        response.setHeader("Pragma","cache"); // HTTP 1.0
        response.setDateHeader ("Expires", -1);           
        
        
        /*logger.info("mostrarReporte");        
        reporteFactory.mostraReporte(request,response);*/
        return FORM_PIEZ_PROC_REPO;
         
        
    }
    
       
    
}
